import axios from 'axios';
import router from '@/router';

const request = axios.create({
    // baseURL: import.meta.env.VITE_APP_BASE_API,
    baseURL: '/api', // 设置基础URL
    timeout: 50000, // 请求超时时间
});

// 请求拦截器，为所有请求添加默认的请求头，获取token，在
request.interceptors.request.use(
    (config) => {
        // 从localStorage中获取登录用户信息，并且将字符串解析为对象
        const loginUser=JSON.parse(localStorage.getItem('loginUser'));
        // 如果存在token，则在请求头中添加token字段
        if(loginUser && loginUser.token) {    
            config.headers['token'] = loginUser.token;
        }
        return config;
    },
    (error) => {
        // 处理请求错误
        console.error('请求错误:', error);
        return Promise.reject(error);
    }
);

// 响应拦截器，处理请求结果
request.interceptors.response.use(
    (response) => {// 成功回调
        return response.data;
    },
    (error) => {
        if(error.response) {
            // 处理响应错误
            switch (error.response.status) {
                case 401:
                    // 未授权，token过期或无效
                    console.error('未授权，请重新登录');
                    localStorage.removeItem('loginUser'); // 清除登录用户信息
                    router.push('/login'); // 跳转到登录页面
                    break;
                case 403:
                    // 禁止访问
                    console.error('禁止访问');
                    break;
                case 404:
                    // 请求资源未找到
                    console.error('请求资源未找到');
                    break;
                default:
                    console.error('请求错误:', error.response.status);
            }
        }
    }
)

// 导出
export default request;
